perm filename DV.DIF[MF,ALS]3 blob sn#791326 filedate 1985-04-24 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00011 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	  1) DV20.WEB[MF,ALS] and 2) DV.WEB[MF,ALS]	4-24-85 08:59	pages 1,1
C00007 00003
C00015 00004	  1) DV20.WEB[MF,ALS] and 2) DV.WEB[MF,ALS]	4-24-85 08:59	pages 9,9
C00022 00005
C00026 00006	  1) DV20.WEB[MF,ALS] and 2) DV.WEB[MF,ALS]	4-24-85 08:59	pages 9,9
C00034 00007
C00037 00008	**** File 1) DV20.WEB[MF,ALS]/11P/346L
C00044 00009	**** File 1) DV20.WEB[MF,ALS]/12P/52L
C00047 00010	**** File 1) DV20.WEB[MF,ALS]/12P/107L
C00050 00011	**** File 1) DV20.WEB[MF,ALS]/12P/147L
C00053 ENDMK
C⊗;
  1) DV20.WEB[MF,ALS] and 2) DV.WEB[MF,ALS]	4-24-85 08:59	pages 1,1

**** File 1) DV20.WEB[MF,ALS]/3P/18L
1)	\.{GF} file format) in an array called |m_store|,
1)	 and only translates the detailed raster
**** File 2) DV.WEB[MF,ALS]/3P/18L
2)	\.{GF} file format) in an array called |mm_store|,
2)	 and only translates the detailed raster
***************


**** File 1) DV20.WEB[MF,ALS]/3P/109L
1)	@!m_num=3; {first index limit for mask store}
1)	@!m_m_num=4; {mod number for |cur_font|}
1)	@!m_store_size=86000; {second index limit for mask store}
1)	@!max_char_no=255; {largest allowed char number}
**** File 2) DV.WEB[MF,ALS]/3P/109L
2)	@!m1_max=3; {max first |mm_store| index}
2)	@!m2_size=60000; {used as multiplier or divider}
2)	@!m2_max= 59999; {max second |mm_store| index}
2)	@!mm_size=240000; {bytes in |mm_store|}
2)	@!mm_max= 239999; {max location in |mm_store|}
2)	@!max_char_no=255; {largest allowed char number}
***************


**** File 1) DV20.WEB[MF,ALS]/8P/290L
1)	store all rasters as received in the |m_store| and index then by
1)	|glyph_ptr|.  The role of a |-1| value for |p| is take over by a |-1| in
**** File 2) DV.WEB[MF,ALS]/8P/290L
2)	store all rasters as received in the |mm_store| and index then by
2)	|glyph_ptr|.  The role of a |-1| value for |p| is take over by a |-1| in
***************


**** File 1) DV20.WEB[MF,ALS]/9P/31L
1)	We also follow the \.{DVItype} example of storing the glyph widths
1)	(measured in \.{DVI} units) in a |width| array that is indexed by values
**** File 2) DV.WEB[MF,ALS]/9P/31L
2)	We will find it necessary, occasionally, to reuse the |mm_store| space
2)	and to make this possible we define a |free_limit| parameter.
2)	This parameter is set initially to |mm_max|. The following
2)	|make_space| procedure is used to free space.
2)	Note that this does not prevent the printing of those glyphs that have
2)	been downloaded but the raster data for those glyphs that have not been
2)	downloaded will have to be reread from the |gf| file should any of these
2)	be subsequently requested.
2)	@p procedure make_space; 
2)	var i,j,k,q,q1,q2: integer;
2)	begin
2)	j←data_start[font_order[0]];
2)	k←data_start[font_order[1]];
2)	q←glyph_ptr[k];
2)	q1←q div m2_size; q2←q mod m2_size;
2)	if q2>4 then free_limit←q-1 else
2)	    begin q2←m2_max; if q1>0 then q1←q1-1 else q1←m1_max;
2)	    free_limit←q1*m2_size+q2;
2)	    end;
2)	for i←j to k-1 do 
2)	    if glyph_ptr[i]≥4 then glyph_ptr[i]←0; {mark as no longer available}
2)	for i←0 to max_fonts-1 do font_order[i]←font_order[i+1];
2)	end;
2)	@ We also follow the \.{DVItype} example of storing the glyph widths
2)	(measured in \.{DVI} units) in a |width| array that is indexed by values
***************


**** File 1) DV20.WEB[MF,ALS]/9P/44L
1)	Gaining access to the font raster details, stored in |m_store|, is a
1)	slightly longer process because the spaces occupied by the raster details
1)	will usually vary from glyph to glyph.  We handle this matter by having
1)	yet another indexing stage where the starting location in |m_store| for
1)	each individual glyph is stored in a |glyph_ptr| array that is accessed,
**** File 2) DV.WEB[MF,ALS]/9P/69L
2)	Gaining access to the font raster details, stored in |mm_store|, is a
2)	slightly longer process because the spaces occupied by the raster details
2)	will usually vary from glyph to glyph.  We handle this matter by having
2)	yet another indexing stage where the starting location in |mm_store| for
2)	each individual glyph is stored in a |glyph_ptr| array that is accessed,
***************


**** File 1) DV20.WEB[MF,ALS]/9P/51L
1)	  We will find it convenient to store the location of the first byte
1)	containing raster information in |glyph_ptr|
1)	rather than the actual start of the complete glyph record which will include
1)	8 initial bytes of additional information.
1)	Normally, this double-indexing recall needs be done but once for
**** File 2) DV.WEB[MF,ALS]/9P/77L
2)	Normally, this double-indexing recall needs be done but once for
***************


**** File 1) DV20.WEB[MF,ALS]/9P/65L
1)	@d f_i_s==(cur_font mod m_m_num)
1)	   {first or font index on stowing,
1)		to index |s_i| and as first index to |m_store|}
1)	@d big_f_i_s==(f_i_s*m_store_size) {used in computing |glyph_ptr|}
1)	@d f_i_r==(cur_font mod m_m_num)
1)	   {first or font index on reading,
1)		to index |s_i| and as first index to |m_store|}
1)	@d big_f_i_r==(f_i_r*m_store_size) {used in computing |glyph_ptr|}
1)	@d stow(#)==begin
1)		m_store[f_i_s,s_i[f_i_s]]←#; incr(s_i[f_i_s]); end
1)	@<Glob...@>=
**** File 2) DV.WEB[MF,ALS]/9P/86L
2)	@d stow(#)==begin mm_store[m1,m2]←#;
2)	    if mm=free_limit then make_space;
2)	    if m2<m2_max then begin incr(m2); incr(mm); end
2)	    else
2)		begin
2)		m2←4; {|-4<m2<4| freed for down-loading and |make_space| signs}
2)		mm←mm+4;
2)		if m1<m1_max then incr(m1) else begin m1←0; mm←4; end;
2)		end;
2)	    end
2)	@<Glob...@>=
***************

  1) DV20.WEB[MF,ALS] and 2) DV.WEB[MF,ALS]	4-24-85 08:59	pages 9,9


**** File 1) DV20.WEB[MF,ALS]/9P/154L
1)	array, |m_store|.  This information is stored serially, as it is received,
1)	together with 8 bytes of preliminary information that must also be
1)	transmitted. The location of the first actual raster byte is, however,
1)	used as the value to record in the |glyph_ptr| array (so that this number
1)	will always be greater than 0).  Later, when the glyph is first called for
1)	by the \.{DVI} file, we will generate an appropriate \.{IMAGEN} |bgly|
**** File 2) DV.WEB[MF,ALS]/9P/175L
2)	array, |mm_store|.  This information is stored serially, as it is received,
2)	together with 8 bytes of preliminary information that must also be
2)	transmitted. The location of the first byte of information is recorded
2)	in the |glyph_ptr| array.  To insure that this number will always be greater
2)	than 3 (since numbers in the range between -3 and +3 are used as special
2)	signals) we do not use the first 4 cells in |mm_store| (actually, the first
2)	4 cells in each of the four sections into which |mm_store| is divided).
2)	Later, when the glyph is first called for
2)	by the \.{DVI} file, we will generate an appropriate \.{IMAGEN} |bgly|
***************


**** File 1) DV20.WEB[MF,ALS]/9P/286L
1)	@!total_glyphs:integer; {the total number of glyphs stored in |m_store|}
1)	@!m_store:packed array [0..m_num,0..m_store_size] of eight_bits; {to store rasters}
1)	@!s_i:array [0..m_num] of integer;
1)		{to save second index values for last stored locations in |m_store|}
1)	@!gf_prev_ptr: integer; {location of next character}
**** File 2) DV.WEB[MF,ALS]/9P/310L
2)	@!total_glyphs:integer; {the total number of glyphs stored in |mm_store|}
2)	@!mm_store:packed array [0..m1_max,0..m2_max] of eight_bits;
2)		{to store glyph information}
2)	@!mm,@!m1,@!m2:integer; {indices for |mm_store|}
2)	@!free_limit:integer; {|mm| value of last free location in mm_store}
2)	@!data_start:array [0..max_fonts] of integer; {|data_base+bc| for fonts}
2)	@!font_order:array [0..max_fonts] of integer; {font numbers in loaded order}
2)	@!gf_prev_ptr: integer; {location of next character}
***************


**** File 1) DV20.WEB[MF,ALS]/9P/293L
1)		{pointers to |m_store|}
1)	@!max_m,@!min_m,@!max_n,@!min_n: integer; {raster bounding parameters}
**** File 2) DV.WEB[MF,ALS]/9P/320L
2)		{pointers to |mm_store|}
2)	@!max_m,@!min_m,@!max_n,@!min_n: integer; {raster bounding parameters}
***************


**** File 1) DV20.WEB[MF,ALS]/9P/304L
1)	for i←0 to 3 do s_i[i]←0;
1)	@ A temporary procedure.
**** File 2) DV.WEB[MF,ALS]/9P/331L
2)	mm←4; m1←0; m2←4; {|-4<mm<4| saved for signalling purposes}
2)	free_limit←mm_max;
2)	for i←0 to max_fonts do font_order[i]←-1;
2)	@ A temporary procedure.
***************


**** File 1) DV20.WEB[MF,ALS]/9P/324L
1)	    l←k div m_store_size;
1)	    k←k mod m_store_size;
1)	    print(l:2,',',k:1);
1)	    end;
**** File 2) DV.WEB[MF,ALS]/9P/353L
2)	    l←k div m2_size;
2)	    k←k mod m2_size;
2)	    print(l:1,',',k:1);
2)	    end;
***************


**** File 1) DV20.WEB[MF,ALS]/9P/350L
1)	begin
**** File 2) DV.WEB[MF,ALS]/9P/379L
2)	@!mm_save,@!m1_save,@!m2_save:integer; {temp save to allow for corrections}
2)	begin
***************


**** File 1) DV20.WEB[MF,ALS]/9P/455L
1)	wp←width_ptr+ec-bc+1;
**** File 2) DV.WEB[MF,ALS]/9P/485L
2)	data_start[cur_font]←width_ptr;
2)	wp←width_ptr+ec-bc+1;
***************


**** File 1) DV20.WEB[MF,ALS]/9P/571L
1)	  if o=boc then  begin @<Stow the |boc| information@> end
**** File 2) DV.WEB[MF,ALS]/9P/601L
2)	  mm_save←mm; m1_save←m1; m2_save←m2; {for width and height corrections}
2)	  glyph_ptr[data_base[cur_font]+c]←m1*m2_size+m2; {save glyph start address}
2)	print(' (',cur_font:1,')',c:1,'[',m1:1,',',m2:1,']');
2)	@!debug
2)	gubed@/
2)	  if o=boc then  begin @<Stow the |boc| information@> end
***************


**** File 1) DV20.WEB[MF,ALS]/9P/578L
1)	    end
1)	else
1)	glyph_ptr[data_base[cur_font]+c]←
1)		(cur_font mod m_m_num)*m_store_size+s_i[cur_font mod m_m_num];
1)		{save mask start address}
1)	@!debug
1)	print(' (',c:1,')',s_i[cur_font mod m_m_num]:1);
1)	 print_ln(' font ',cur_font:1,'  c= ',c:1,
1)		' s_i= ',s_i[cur_font mod m_m_num]:1);
1)	  print_ln('   s_i= ',s_i[cur_font mod m_m_num]:1);
1)	gubed@/
1)	  @<Stow the glyph details@>;
**** File 2) DV.WEB[MF,ALS]/9P/613L
2)	    end;
2)	  @<Stow the glyph details@>;
***************


**** File 1) DV20.WEB[MF,ALS]/9P/595L
1)	form needed by the \.{IMAGEN} and then stowed into |m_store| as
1)	|signed_pairs|, in keeping with the restricted range of value that the
**** File 2) DV.WEB[MF,ALS]/9P/620L
2)	form needed by the \.{IMAGEN} and then stowed into |mm_store| as
2)	|signed_pairs|, in keeping with the restricted range of value that the
***************


**** File 1) DV20.WEB[MF,ALS]/9P/624L
1)	height_location←s_i[cur_font mod m_m_num];
1)	stow_signed_pair(max_n-min_n+1); {height}
**** File 2) DV.WEB[MF,ALS]/9P/649L
2)	stow_signed_pair(max_n-min_n+1); {height}
***************


**** File 1) DV20.WEB[MF,ALS]/9P/630L
1)	|m_store| as |signed_pairs|.
1)	@ @<Stow the |boc1| information@>=
**** File 2) DV.WEB[MF,ALS]/9P/654L
2)	|mm_store| as |signed_pairs|.
2)	@ @<Stow the |boc1| information@>=
***************

  1) DV20.WEB[MF,ALS] and 2) DV.WEB[MF,ALS]	4-24-85 08:59	pages 9,9


**** File 1) DV20.WEB[MF,ALS]/9P/656L
1)	height_location←s_i[cur_font mod m_m_num];
1)	stow_signed_pair(del_n+1);
**** File 2) DV.WEB[MF,ALS]/9P/680L
2)	stow_signed_pair(del_n+1);
***************


**** File 1) DV20.WEB[MF,ALS]/9P/745L
1)	@!debug
1)	if m_store[cur_font mod m_m_num,height_location+1]≠row_count then
1)		print_ln(' c=',c:1,' rows ',
1)		m_store[cur_font mod m_m_num,height_location+1]:1,
1)		' now ',row_count:1);
1)	gubed@/
1)	m_store[cur_font mod m_m_num,height_location]←row_count div 256;
1)	m_store[cur_font mod m_m_num,height_location+1]←row_count mod 256;
1)	@!debug
1)	if m_store[cur_font mod m_m_num,height_location-3]≠max_column_count then
1)		print_ln(' c=',c:1,' columns ',
1)		m_store[cur_font mod m_m_num,height_location-3]:1,
1)		' now ',max_column_count:1);
1)	gubed@/
1)	m_store[cur_font mod m_m_num,height_location-4]←max_column_count div 256;
1)	m_store[cur_font mod m_m_num,height_location-3]←max_column_count mod 256;
1)	@* Optional modes of output.
**** File 2) DV.WEB[MF,ALS]/9P/768L
2)	mm_store[m1_save,m2_save]←max_column_count div 256;
2)	if m2_save<m2_max then incr(m2_save) else
2)	    begin m2_save←4; if m1_save<m1_max then incr(m1_save)
2)	        else m1_save←0;
2)	    end;
2)	mm_store[m1_save,m2_save]←max_column_count mod 256;
2)	if m2_save+3<m2_max then m2_save←m2_save+3 else
2)	    begin m2_save←m2_save+7-m2_max; if m1_save<m1_max then incr(m1_save)
2)		else m1_save←0;
2)	    end;
2)	mm_store[m1_save,m2_save]←row_count div 256;
2)	if m2_save<m2_max then incr(m2_save) else
2)	    begin m2_save←4; if m1_save<m1_max then incr(m1_save)
2)	        else m1_save←0;
2)	    end;
2)	mm_store[m1_save,m2_save]←row_count mod 256;
2)	@* Optional modes of output.
***************


  1) DV20.WEB[MF,ALS] and 2) DV.WEB[MF,ALS]	4-24-85 08:59	pages 11,11

**** File 1) DV20.WEB[MF,ALS]/11P/3L
1)	uses in a large |m_store| array and stores the location of these rasters
1)	and information relating to their state in a |glyph_ptr| array.  Additional
1)	|width| and |pixel_width| information is stored in still other arrays.
1)	It is usually not possible to provide a large enough |m_store| space
1)	for all of the fonts that may be used in some documents.  \.{DVIIMP}
1)	provides the facility for removing fonts from |m_store| to make space for
1)	additional fonts and then for restoring the removed fonts if this becomes
**** File 2) DV.WEB[MF,ALS]/11P/3L
2)	uses in a large |mm_store| array and stores the location of these rasters
2)	and information relating to their state in a |glyph_ptr| array.  Additional
2)	|width| and |pixel_width| information is stored in still other arrays.
2)	It is usually not possible to provide a large enough |mm_store| space
2)	for all of the fonts that may be used in some documents.  \.{DVIIMP}
2)	provides the facility for removing fonts from |mm_store| to make space for
2)	additional fonts and then for restoring the removed fonts if this becomes
***************


**** File 1) DV20.WEB[MF,ALS]/11P/26L
1)	have not yet been read into the |m_store| memory.  The individual glyph
1)	pointers are then set to positive values (actually, greater than 7) when
1)	the font rasters are read in, recording the position in the |m_store|
1)	where the glyph is stored. These numbers are negated when each individual
**** File 2) DV.WEB[MF,ALS]/11P/26L
2)	have not yet been read into the |mm_store| memory.  The individual glyph
2)	pointers are then set to positive values (actually, greater than 3) when
2)	the font rasters are read in, recording the position in the |mm_store|
2)	where the glyph is stored. These numbers are negated when each individual
***************


**** File 1) DV20.WEB[MF,ALS]/11P/42L
1)	with the font's initial needs.
1)	A number of different utility procedures and functions will be needed.
**** File 2) DV.WEB[MF,ALS]/11P/42L
2)	with the font's initial needs, since most of the more commonly used 
2)	glyphs may have already been downloaded.
2)	A number of different utility procedures and functions will be needed.
***************


**** File 1) DV20.WEB[MF,ALS]/11P/91L
1)	@ Here is the procedure for making space available in the |m_store| array.
1)	@p procedure free_space;
1)		 {zero affected |m_store| area and + valued |glyph_ptr|'s}
1)	var i,j: integer;
1)	begin
1)	j←cur_font mod m_m_num; {defining section of |m_store| to be cleared}
1)	for i←0 to max_glyphs do
1)	  if (glyph_ptr[i]div m_store_size) = j then
1)	    if glyph_ptr[i] >0 then glyph_ptr[i]←0; {marking glyphs as removed}
1)	for i←0 to m_store_size do m_store[j,i]←0; {marking space as available}
1)	s_i[j]←0; {preparing to start at the beginning}
1)	end;
1)	@ The following subroutine does the necessary things when a \\{fnt\_def}
**** File 2) DV.WEB[MF,ALS]/11P/92L
2)	@ The following subroutine does the necessary things when a \\{fnt\_def}
***************


**** File 1) DV20.WEB[MF,ALS]/11P/217L
1)	    end
1)	else
1)	    begin
1)	@!debug
1)	print_ln('	',s_i[0]:6,s_i[1]:6,s_i[2]:6,s_i[3]:6,' ');
1)	gubed
1)	if s_i[cur_font mod m_m_num] > m_store_size-(120*font_m_val[cur_font]) then
1)		begin
1)		free_space;
1)	@!debug
1)		print(' freeing space ');
1)		print_ln(' ',s_i[0]:1,' ',s_i[1]:1,' ',s_i[2]:1,' ',s_i[3]:1,' ');
1)	gubed
1)		end;
1)	    end;
**** File 2) DV.WEB[MF,ALS]/11P/204L
2)	    end;
***************


**** File 1) DV20.WEB[MF,ALS]/11P/319L
1)	begin
**** File 2) DV.WEB[MF,ALS]/11P/292L
2)	@!mm_save,@!m1_save,@!m2_save:integer; {to allow corrections}
2)	begin
***************

**** File 1) DV20.WEB[MF,ALS]/11P/346L
1)			@<Stow the |boc| or |boc1| information@>;
1)			glyph_ptr[data_base[cur_font]+c]←
1)				(cur_font mod m_m_num)*
1)				m_store_size+s_i[cur_font mod m_m_num];
1)				{save mask start address}
1)			@<Stow the glyph details@>;
**** File 2) DV.WEB[MF,ALS]/11P/320L
2)			mm_save←mm; m1_save←m1; m2_save←m2;
2)				{for possible width and height corrections}
2)			glyph_ptr[data_base[cur_font]+c]←m1*m2_size+m2;
2)				{save mask start address}
2)			@<Stow the |boc| or |boc1| information@>;
2)			@<Stow the glyph details@>;
***************


**** File 1) DV20.WEB[MF,ALS]/11P/386L
1)	height_location←s_i[cur_font mod m_m_num];
1)	stow_signed_pair(del_n+1);
**** File 2) DV.WEB[MF,ALS]/11P/360L
2)	stow_signed_pair(del_n+1);
***************


**** File 1) DV20.WEB[MF,ALS]/12P/3L
1)	the |m_store| array) will have to be translated and downloaded by means of
1)	an |im_bgly| command on the first occasion that the glyph is to be
1)	printed.  The following tables will assist in this work:
1)	@<Glob...@>=
**** File 2) DV.WEB[MF,ALS]/12P/3L
2)	the |mm_store| array) will have to be translated and downloaded by means of
2)	an |im_bgly| command on the first occasion that the glyph is to be
2)	printed.  The following definitions and tables will assist in this work:
2)	@d advance_q==begin if q2<m2_max then incr(q2)
2)	    else 
2)		begin
2)		q2←4; {|-4<m2<4| is left free for other uses}
2)	 	if q1<m1_max then incr(q1) else q1←0;
2)		end;
2)	    end
2)	@<Glob...@>=
***************


**** File 1) DV20.WEB[MF,ALS]/12P/17L
1)	@ We will also have occasion to read halfwords from |m_store|.
1)	@p function read_signed_pair(z:integer):integer;
1)		 {returns the next two bytes, signed}
1)	var a,b:eight_bits;
1)	begin a←m_store[f_i_r,z]; b←m_store[f_i_r,z+1];
1)	if a<128 then read_signed_pair←(a*256)+b
**** File 2) DV.WEB[MF,ALS]/12P/25L
2)	@ We will also have occasion to read halfwords from |mm_store|.
2)	@p function read_signed_pair(mm_tmp:integer):integer;
2)		 {returns the next two bytes, signed}
2)	var a,b:eight_bits;
2)	m1_tmp,m2_tmp:integer;
2)	begin 
2)	m1_tmp←mm_tmp div (m2_size); m2_tmp←mm_tmp mod (m2_size);
2)	a←mm_store[m1_tmp,m2_tmp];
2)	if m2_tmp<m2_max then incr(m2_tmp)
2)	else
2)	    begin m2_tmp←4; 
2)	    if m1_tmp<m1_max then incr(m1_tmp) else m1_tmp←0; {wrap-around assumed}
2)	    end;
2)	b←mm_store[m1_tmp,m2_tmp];
2)	if a<128 then read_signed_pair←(a*256)+b
***************


**** File 1) DV20.WEB[MF,ALS]/12P/44L
1)	bytes_required:integer; {bytes per row for current glyph}
1)	begin
1)	im_byte(im_bgly);				{|im_bgly|}
1)	if c<128 then im_halfword(cur_font*128+c) {normal family and member name}
**** File 2) DV.WEB[MF,ALS]/12P/61L
2)	q1,q2: integer;
2)	bytes_required:integer; {bytes per row for current glyph}
2)	begin
2)	im_byte(im_bgly);
2)	if c<128 then im_halfword(cur_font*128+c) {normal family and member name}
***************


**** File 1) DV20.WEB[MF,ALS]/12P/52L
1)	q←glyph_ptr[data_base[cur_font]+c]-big_f_i_r;
1)		 {|glyph_ptr| points to mask start}
1)	for i←8 downto 1 do im_byte(m_store[f_i_r,q-i]);	{width, left offset}
1)								{height,top offset}
1)	bytes_required←(read_signed_pair(q-8)+7)div 8;
1)	n←0; dis←0; val←0; w←0; real_w←0;
**** File 2) DV.WEB[MF,ALS]/12P/70L
2)	q←glyph_ptr[data_base[cur_font]+c];
2)		 {get starting location in |mm_store|}
2)	q1← q div (m2_size); q2←q mod (m2_size);
2)	@!debug
2)	gubed@/
2)	print('   im(',cur_font:1,')',c:1,'[',q1:1,',',q2:1,']');
2)	bytes_required←((read_signed_pair(q)+7)div 8);
2)	for i←1 to 8 do
2)	    begin
2)	    im_byte(mm_store[q1,q2]);
2)	    advance_q;
2)	    end; 	 {width, left offset, height,top offset}
2)	n←0; dis←0; val←0; w←0; real_w←0;
***************


**** File 1) DV20.WEB[MF,ALS]/12P/60L
1)		w←m_store[f_i_r,q];
1)		real_w←w;
**** File 2) DV.WEB[MF,ALS]/12P/85L
2)		w←mm_store[q1,q2];
2)		real_w←w;
***************


**** File 1) DV20.WEB[MF,ALS]/12P/93L
1)	incr(q);
1)	b←m_store[f_i_r,q];
1)	if b≤paint2 then begin
1)		incr(q);
1)		if b=paint2 then
1)			begin b←m_store[f_i_r,q]; incr(q);
1)			b←b*256+m_store[f_i_r,q]; {this can be a value as high as 65535}
1)			incr(q);
1)			end
1)		else if b=paint1 then begin
1)			b←m_store[f_i_r,q]; incr(q);
1)			end;
**** File 2) DV.WEB[MF,ALS]/12P/118L
2)	advance_q;
2)	b←mm_store[q1,q2];
2)	if b≤paint2 then begin
2)		advance_q;
2)		if b=paint2 then
2)			begin b←mm_store[q1,q2]; advance_q;
2)			b←b*256+mm_store[q1,q2]; advance_q;
2)			end
2)		else if b=paint1 then begin
2)			b←mm_store[q1,q2]; advance_q;
2)			end;
***************

**** File 1) DV20.WEB[MF,ALS]/12P/107L
1)	else begin
1)		b←0; w←8*bytes_required; {a safety measure}
1)		end;
1)	n←0; dis←w+b; val←0;
**** File 2) DV.WEB[MF,ALS]/12P/131L
2)	else begin b←0; w←8*bytes_required; {a safety measure}
2)	     end;
2)	n←0; dis←w+b; val←0;
***************


**** File 1) DV20.WEB[MF,ALS]/12P/116L
1)		incr(q);
1)		w←m_store[f_i_r,q];
1)		while w>0 do begin
**** File 2) DV.WEB[MF,ALS]/12P/139L
2)		advance_q;
2)		w←mm_store[q1,q2];
2)		while w>0 do begin
***************


**** File 1) DV20.WEB[MF,ALS]/12P/123L
1)	incr(q);
1)	n←0; dis←0; val←0; w←0; b←0;
**** File 2) DV.WEB[MF,ALS]/12P/146L
2)	advance_q;
2)	n←0; dis←0; val←0; w←0; b←0;
***************


**** File 1) DV20.WEB[MF,ALS]/12P/128L
1)	begin
1)	w←m_store[f_i_r,q];
1)	if w≤paint2 then
**** File 2) DV.WEB[MF,ALS]/12P/151L
2)	begin w←mm_store[q1,q2];
2)	if w≤paint2 then
***************


**** File 1) DV20.WEB[MF,ALS]/12P/133L
1)		begin incr(q); w←m_store[f_i_r,q]; incr(q);
1)		w←w*256+m_store[f_i_r,q]; {this can be a value as high as 65535}
1)		end
1)	    else if w=paint1 then
1)		begin incr(q);
1)		w←m_store[f_i_r,q]; {this can be between 64 and 255}
1)		end
1)	    else begin
1)		end;
  1) DV20.WEB[MF,ALS] and 2) DV.WEB[MF,ALS]	4-24-85 08:59	pages 12,12

1)	    incr(q);
1)	    b←m_store[f_i_r,q];
1)	    if b≤paint2 then
**** File 2) DV.WEB[MF,ALS]/12P/155L
2)		begin advance_q; w←mm_store[q1,q2]; advance_q;
2)		w←w*256+mm_store[q1,q2]; {can be as high as 65535}
2)		end
2)	    else if w=paint1 then
2)		begin advance_q; w←mm_store[q1,q2]; {can be between 64 and 255}
2)		end;
2)	    advance_q;
2)	    b←mm_store[q1,q2];
2)	    if b≤paint2 then
***************

**** File 1) DV20.WEB[MF,ALS]/12P/147L
1)		    begin incr(q); b←m_store[f_i_r,q]; incr(q);
1)		    b←b*256+m_store[f_i_r,q]; {this can be a value as high as 65535}
1)		    end
1)		else if b=paint1 then
1)		    begin incr(q);
1)		    b←m_store[f_i_r,q]; {this can be between 64 and 255}
1)		    end
1)		else begin
1)		    end;
1)		incr(q);
1)		end
**** File 2) DV.WEB[MF,ALS]/12P/166L
2)		    begin advance_q; b←mm_store[q1,q2]; advance_q;
2)		    b←b*256+mm_store[q1,q2];
2)		    end
2)		else if b=paint1 then
2)		    begin advance_q;
2)		    b←mm_store[q1,q2];
2)		    end;
2)		advance_q;
2)		end
***************


**** File 1) DV20.WEB[MF,ALS]/12P/164L
1)	    begin
1)	    b←0; w←8*bytes_required; {a safety measure}
1)	    end;
**** File 2) DV.WEB[MF,ALS]/12P/181L
2)	    begin b←0; w←8*bytes_required; {a safety measure}
2)	    end;
***************


**** File 1) DV20.WEB[MF,ALS]/13P/317L
1)		print(' (',f_i_r:1,',',glyph_ptr[data_base[cur_font]+p]-big_f_i_r:1,')');
1)	gubed
1)		if g=0 then begin
1)	@!debug
1)			print_ln(' must reload for c= ',p:1,' in font ',cur_font:1);
1)	gubed
1)			reload_font; {font must be reloaded}
**** File 2) DV.WEB[MF,ALS]/13P/317L
2)	gubed
2)	if g<-3 then print(' (',cur_font:1,')',p:1);
2)		if g=0 then begin
2)	@!debug
2)	gubed
2)			print_ln(' must reload (',cur_font:1,')',p:1);
2)			reload_font; {font must be reloaded}
***************


**** File 1) DV20.WEB[MF,ALS]/13P/326L
1)	{|if g>0 then print(' ',p:1);|}
1)		if g>0 then do_im_bgly(p);
1)		@<Resyncronize@>;
**** File 2) DV.WEB[MF,ALS]/13P/326L
2)	if g=-1 then print(' -1(',cur_font:1,')',p:1);
2)		if g>3 then do_im_bgly(p);
2)		@<Resyncronize@>;
***************